package com.starhub.application.collection.service;

import com.starhub.domain.knowledge.dto.QueryKnowledgeItemDto;
import com.starhub.domain.knowledge.entity.KnowledgeItem;
import com.starhub.domain.knowledge.result.KnowledgeItemsSearchResult;

import java.util.List;
import java.util.Map;

/**
 * 知识库服务接口
 * @version: V1.0
 * @author: luosw
 * @time 2025-06-20
 */
public interface KnowledgeItemService {

    
    /**
     * 插入知识库
     * @param knowledgeItem
     * @return
     */
    int insert(KnowledgeItem knowledgeItem);
    
    /**
     * 更新知识库
     * @param knowledgeItem
     * @return
     */
    int updateById(KnowledgeItem knowledgeItem);
    
    /**
     * 根据ID查询知识库
     * @param id
     * @return
     */
    KnowledgeItem selectById(Long id);
    
    /**
     * 根据ID查询未删除的知识库
     * @param id
     * @return
     */
    KnowledgeItem selectByIdAndNotDeleted(Long id);


    /**
     * 逻辑删除
     * @param id
     * @return
     */
    int deleteById(Long id);


    /**
     * 物理删除
     * @param id
     * @return
     */
    int deleteRecord(Long id);


    /**
     * 批量查询接口
     * @param params
     * @return
     */
    List<KnowledgeItem> selectByMap(Map<String, Object> params);


    /**
     * 批量查询接口
     * @param params
     * @return
     */
    List<KnowledgeItem> getActiveKnowledgeItem(Map<String, Object> params);


    /**
     * 获取所有数据
     * @param collectionId 集合ID
     * @return 数据列表
     */
    List<String> getAllDatas(Long collectionId);

    /**
     * 分页查询知识条目
     *
     * @param queryDto 查詢条件
     * @param pageNo 当前页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    KnowledgeItemsSearchResult pageKnowledgeItems(QueryKnowledgeItemDto queryDto, Long pageNo, Long pageSize);
}
